package main

import "fmt"

func main1() {
	//整型 基于符号区分，分为int 和uint（uint的缩写就是unsigned int)符号的意思
	//如果在提交代码时我们发现自己的代码经常格式感觉有点不好看，mac下使用option+command+L进行格式化，帮助自动修正代码位置

	//自动推导类型
	a := 12
	fmt.Printf("%T\n", a) //result-->int
	var b int = 24
	fmt.Printf("%T\n", b) //result-->int
	//关于go当中我们经常使用fmt.Println这样的类型去打印变量名称，默认去打印对应的值
	//上面的定义未给出赋值的类型，如果希望推导它的类型可以使用%T\n来拿到

	//推测出它的类型，看看使用负数的类型是什么类型支持
	c := -345             //定义一个负数类型
	fmt.Println(c)        //result-->-345
	fmt.Printf("%T\n", c) //现在我们不知道它定义的类型，可以使用%t推导处理
	//result-->int，说明int支持负数类型

	var d uint = 9999 //uint默认只能存储大于等于0的数值，尝试使用uint=-9999不能正常运行
	fmt.Println(d)    //只能存储整数

}
func main2() {
	//整型基于位 int8 int16 int32 int64.位是计算机当中存储的
	//最小单元一个字节有8个位，不同的位存储的范围集合也是不一样的
	//int大小取决于操作系统， 32位相当于int32， 64位相当于int64
}

func main() {
	//整型基于进制 十进制 八进制 十六进制
	//十进制
	var a int = 123 //默认go支持的数据都是十进制，现在用的进制现在用的 数学算法就是十进制 满十进一
	fmt.Println(a)
	//八进制
	var b int = 0123 //默认八进制不能超过8后续的数值，逢八进一。一些编程语言中常常以数字0开始表明该数字是八进制。
	fmt.Println(b)
	//十六进制它由0-9，A-F组成，字母不区分大小写。
	//与10进制的对应关系是：0-9对应0-9，A-F对应10-15
	//以0x开头，使用场景内存地址 位运算
	//command+/增加注释或者去掉注释
	var c int = 0xabc
	fmt.Println(c)
	//------------------------
	//%d按照十进制打印%o按照八进制打印，%x按照十六进制打印
	//fmt.Printf("%d\n",a)
	//fmt.Printf("%o\n",b)
	//fmt.Printf("%x\n",c)

	//在go语言当中不能以二进制作为它的格式 但是可以打印数据二进制的格式
	//可以使用%b进行转换二进制
	fmt.Printf("%b\n", a)

}
